
//思路就是finnaly就是不管成功还是失败都会，去执行内部的回调任务，并且会将之前promise的值，传递给下一个，但是这个是不会去返回promise的记得。
//相当于一个then方法，因为可以继续调用then

function finnaly(callback) {
  return this.then((value) => {
    return Promise.resolve(callback()).then(() => value)

  }, (reason) => {
    return Promise.resolve(callback()).then(() => { throw Error(reason) })//这里有问题，就是
  })
}
//失败的时候，要去触发之后then里失败的回调，虽然，finnaly不会去改变调用它的
//状态，但是如果之前的promise是一个失败的状态的话， 那就要抛出错误了，由于不是返回一个promise，所以拿不到这个reject,所以是抛出错误，然后就会去，在之后的失败回调中拿到这个失败的值
let a = new Promise((resolve, reject) => {
  resolve(11)
})
a.then().finally(() => 223).then()